//package com.jingbit.ai;
//
//import android.Manifest;
//import android.bluetooth.BluetoothDevice;
//import android.content.ComponentName;
//import android.content.Context;
//import android.content.Intent;
//import android.content.ServiceConnection;
//import android.graphics.drawable.AnimationDrawable;
//import android.hardware.camera2.CameraAccessException;
//import android.media.AudioManager;
//import android.media.audiofx.AcousticEchoCanceler;
//import android.media.audiofx.NoiseSuppressor;
//import android.os.Build;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.IBinder;
//import android.os.Message;
//import android.text.TextUtils;
//import android.util.Log;
//import android.view.MotionEvent;
//import android.view.View;
//import android.widget.ImageView;
//
//import androidx.annotation.Nullable;
//import androidx.annotation.RequiresApi;
//import androidx.appcompat.app.AppCompatActivity;
//
//import com.baidu.aip.asrwakeup3.core.recog.IStatus;
//import com.baidu.aip.asrwakeup3.core.recog.MyRecognizer;
//import com.baidu.aip.asrwakeup3.core.recog.listener.RecogEventListener;
//import com.baidu.aip.asrwakeup3.core.util.AuthUtil;
//import com.baidu.aip.asrwakeup3.core.wakeup.MyWakeup;
//import com.baidu.aip.asrwakeup3.core.wakeup.WakeUpResult;
//import com.baidu.aip.asrwakeup3.core.wakeup.listener.IWakeupListener;
//import com.baidu.speech.asr.SpeechConstant;
//import com.jingbit.ai.utils.TTSHelper;
//import com.jingbit.ai.bt.BluetoothService;
//import com.jingbit.ai.bt.BluetoothUtil;
//import com.jingbit.ai.helper.GJsonHelper;
//import com.jingbit.ai.music.MusicService;
//import com.jingbit.ai.music.MusicView;
//import com.jingbit.ai.openai.ChatGpt;
//import com.jingbit.ai.openai.bean.ChatBean;
//import com.jingbit.ai.openai.bean.Choices;
//import com.jingbit.ai.service.LocationService;
//import com.jingbit.ai.servo.ServoPatrol;
//import com.jingbit.ai.utils.CmdUtil;
//import com.jingbit.ai.utils.MediaUtil;
//import com.jingbit.ai.weather.HFWeather;
//import com.jingbit.ai.weather.listener.IWeatherListener;
//import com.jingbit.ai.widget.WaveView;
//import com.tbruyelle.rxpermissions.RxPermissions;
//import com.unfbx.chatgpt.sse.ConsoleEventSourceListener;
//
//import java.util.Map;
//import java.util.Timer;
//import java.util.TimerTask;
//
//import okhttp3.Response;
//import okhttp3.sse.EventSource;
//import rx.functions.Action1;
//
//@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
//public class MainActivity extends AppCompatActivity implements Handler.Callback
//        , IStatus, IWakeupListener, IWeatherListener {
//    private static final int REQ_VOICEPRINT = 1000;
//    private WaveView wv_recog;
//    private ImageView iv_qrcode;
//    private ImageView iv_biaoqing;
//    private AnimationDrawable animDrawable;
//
//    private Timer timer;
//    private Handler baseHandler;
//    private BluetoothDevice btDevice;
//    private BluetoothService btService;
//    private volatile boolean detectedPerson;
//    private String pico_save_img = "pico_ret.jpg";
//    private String ppocr_save_img = "ppocr_ret.jpg";
//    private String facekeypoint_save_img = "facekeypoint_ret.jpg";
//    private ServoPatrol servoPatrol;
//
//    private MyWakeup myWakeup;
//
//    private ChatGpt chatGpt;
//    private MyRecognizer myRecognizer;
//    private RecogEventListener recogEventListener;
//    /**
//     * 0: 方案1， backTrackInMs > 0,唤醒词说完后，直接接句子，中间没有停顿。
//     * 开启回溯，连同唤醒词一起整句识别。推荐4个字 1500ms
//     * backTrackInMs 最大 15000，即15s
//     * <p>
//     * >0 : 方案2：backTrackInMs = 0，唤醒词说完后，中间有停顿。
//     * 不开启回溯。唤醒词识别回调后，正常开启识别。
//     * <p>
//     */
//    private final int backTrackInMs = 0;
//    private volatile int detectNoPerson = 0;//没有检测到人的次数，每次1秒单位计算
//    private volatile long detectNoSpeech = 0;//没有检测到说话的时长
//
//    private MusicService musicService;
//    private MusicView musicView;
//    private ServiceConnection mConn = new ServiceConnection() {
//        @Override
//        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
//            // 实例化 MusicService 对象
//            MusicService.MusicBinder musicBinder = (MusicService.MusicBinder) iBinder;
//            musicService = musicBinder.getService();
//            runOnUiThread(new Runnable() {
//                @Override
//                public void run() {
//                    musicView = new MusicView(MainActivity.this, musicService);
//                }
//            });
//        }
//
//        @Override
//        public void onServiceDisconnected(ComponentName componentName) {
//            musicService = null;
//        }
//    };
//
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_local);
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
//            AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
//            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
//                int audioSessionId = audioManager.generateAudioSessionId();
//                NoiseSuppressor.create(audioSessionId);
//                AcousticEchoCanceler.create(audioSessionId);
//            }
//        }
//        // Android 版本大于等于 12 时，申请新的蓝牙权限
//        new RxPermissions(MainActivity.this)
//                .request(Manifest.permission.WRITE_EXTERNAL_STORAGE,
//                        Manifest.permission.READ_EXTERNAL_STORAGE,
//                        Manifest.permission.ACCESS_FINE_LOCATION,
//                        Manifest.permission.ACCESS_COARSE_LOCATION,
//                        Manifest.permission.CHANGE_NETWORK_STATE,
//                        Manifest.permission.CHANGE_WIFI_STATE,
//                        Manifest.permission.RECORD_AUDIO,
//                        Manifest.permission.CAMERA)//多个权限用","隔开
//                .subscribe(new Action1<Boolean>() {
//                    @Override
//                    public void call(Boolean aBoolean) {
//                        if (aBoolean) {
//                            //当所有权限都允许之后，返回true
//                            Log.i("permissions", "btn_more_sametime：" + aBoolean);
//                            initViews();
//                            initParams();
//                        } else {
//                            //只要有一个权限禁止，返回false，下一次申请只申请没通过申请的权限
//                            Log.i("permissions", "btn_more_sametime：" + aBoolean);
//                        }
//                    }
//                });
//    }
//
//    private void initParams() {
//        // 绑定 MusicService
//        Intent intent = new Intent(this, MusicService.class);
//        bindService(intent, mConn, Context.BIND_AUTO_CREATE);
//        startService(new Intent(this, LocationService.class));
//
//        timer = new Timer();
//        chatGpt = new ChatGpt();
//        baseHandler = new Handler();
//
//        servoPatrol = new ServoPatrol(this, 135, 270, 0, 20);
//
//        myWakeup = new MyWakeup(this, this);
//        recogEventListener = new RecogEventListener(this, this);
//        myRecognizer = new MyRecognizer(this, recogEventListener);
//
//        TTSHelper.init(this);
//        MediaUtil.init();
//
//        btConnect();
//        startWakeup();
//
//        timer.schedule(new TimerTask() {
//            @Override
//            public void run() {
//                btConnect();
//                if (musicService != null && musicService.isPlaying() && musicView != null) {
//                    runOnUiThread(new Runnable() {
//                        @Override
//                        public void run() {
//                            musicView.show();
//                        }
//                    });
//                }
//                if (chatGpt.thinking != -1) {
//                    chatGpt.thinking++;
//                }
//                if (chatGpt.thinking == 5) {
//                    chatGpt.thinking = 0;
//                }
//                if (!detectedPerson) {
//                    if (detectNoPerson == 30) {
//                        servoPatrol.startPatrol();
//                        detectNoPerson = 0;
//                    }
//                    detectNoPerson++;
//                } else {
//                    detectNoPerson = 0;
//                    servoPatrol.stopPatrol();
//                }
//                if (detectNoSpeech != 0 && System.currentTimeMillis() - detectNoSpeech > 180000) {
//                    doSpeak("主人，我去休息啦！");
//                    detectNoSpeech = 0;
//                    runOnUiThread(new Runnable() {
//                        @Override
//                        public void run() {
//                            stopAnimation();
//                            hideWaveAnim();
//                            stopWakeup();
//                        }
//                    });
//                }
//                if (TTSHelper.isSpeaking()) {
//                    startAnimation(R.drawable.speak);
//                } else {
//                    stopAnimation();
//                }
//            }
//        }, 1000, 200);
//    }
//
//    private void startWakeup() {
//        if (myWakeup != null) {
//            Map<String, Object> params = AuthUtil.getParam();
//            params.put(SpeechConstant.WP_WORDS_FILE, "assets:///WakeUp.bin");
//            // "assets:///WakeUp.bin" 表示WakeUp.bin文件定义在assets目录下
//
//            // params.put(SpeechConstant.ACCEPT_AUDIO_DATA,true);
//            // params.put(SpeechConstant.IN_FILE,"res:///com/baidu/android/voicedemo/wakeup.pcm");
//            // params里 "assets:///WakeUp.bin" 表示WakeUp.bin文件定义在assets目录下
//
//            myWakeup.start(params);
//        }
//    }
//
//    private void stopWakeup() {
//        myWakeup.stop();
//    }
//
//    private void btConnect() {
//        if (btService == null)
//            btService = new BluetoothService(this, this);
//        if (btDevice == null)
//            btDevice = BluetoothUtil.pair(AIApp.BT_ADDR, AIApp.BT_PWD);
//        if (btDevice == null) {
////            Toast.makeText(this,"蓝牙适配失败！",Toast.LENGTH_SHORT).show();
//            doSpeak("我不能动了！");
//            return;
//        }
//        if (btService.getConnectState() < BluetoothService.STATE_CONNECTING)
//            btService.connect(btDevice);
//    }
//
//    private void initViews() {
//        Log.d(AIApp.TAG, "initViews");
////        cameraView = (CameraSurfaceView) findViewById(com.jingbit.ai.paddle.R.id.sv_preview);
////        cameraView.setOnTextureChangedListener(this);
//        wv_recog = findViewById(R.id.wv_recog);
//        iv_qrcode = findViewById(R.id.iv_qrcode);
//        iv_biaoqing = findViewById(R.id.iv_biaoqing);
//        iv_biaoqing.setLongClickable(true);
//        iv_biaoqing.setOnLongClickListener(new View.OnLongClickListener() {
//            @Override
//            public boolean onLongClick(View v) {
//                return false;
//            }
//        });
//
//        findViewById(R.id.iv_biaoqing).setOnTouchListener(new View.OnTouchListener() {
//            @Override
//            public boolean onTouch(View v, MotionEvent event) {
//                if (musicService != null && musicService.isPlaying()) {
//                    musicService.stop();
//                    return true;
//                }
//                return false;
//            }
//        });
//    }
//
//    public void showEmotion(String emotion) {
//        switch (emotion) {
//            case "笑":
//                break;
//            case "哭":
//                break;
//            case "生气":
//                break;
//            case "调皮":
//                break;
//
//        }
//    }
//
//    public void showQrcode(boolean weixin) {
//        iv_qrcode.setImageResource(weixin ? R.mipmap.wx_pay : R.mipmap.ali_pay);
//        iv_qrcode.setVisibility(View.VISIBLE);
//        baseHandler.postDelayed(new Runnable() {
//            @Override
//            public void run() {
//                doSpeak("你付完了吗？我要收回二维码啦！");
//                iv_qrcode.setVisibility(View.GONE);
//            }
//        }, 60 * 1000);
//    }
//
//    private void doSpeak(String word) {
//        doSpeak(word, false);
//    }
//
//    private void doSpeak(String word, boolean add) {
//        TTSHelper.doSpeak(word, add);
//        startAnimation(R.drawable.speak);
//    }
//
//    private void startAnimation(int animRes) {
//        runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                synchronized (MainActivity.this) {
//                    if (animDrawable != null && animDrawable.isRunning()) {
//                        animDrawable.stop();
//                        animDrawable = null;
//                        return;
//                    }
//                    iv_biaoqing.setImageResource(animRes);
//                    animDrawable = (AnimationDrawable) iv_biaoqing.getDrawable();
//                    animDrawable.start();
//                }
//            }
//        });
//    }
//
//    private void stopAnimation() {
//        runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                if (animDrawable != null && animDrawable.isRunning()) {
//                    animDrawable.stop();
//                    animDrawable = null;
//                }
//                iv_biaoqing.setImageResource(R.drawable.normal);
//            }
//        });
//    }
//
//    private void showWaveAnim() {
//        wv_recog.setVisibility(View.VISIBLE);
//        wv_recog.startAnim();
//    }
//
//    private void hideWaveAnim() {
//        wv_recog.setVisibility(View.INVISIBLE);
//        wv_recog.stopAnim();
//    }
//
//    @Override
//    protected void onResume() {
//        super.onResume();
//        startWakeup();
//    }
//
//    @Override
//    protected void onPause() {
//        Log.d(AIApp.TAG, "onPause");
//        super.onPause();
//        if (myWakeup != null)
//            myWakeup.stop();
//        if (myRecognizer != null)
//            myRecognizer.stop();
//    }
//
//    @Override
//    protected void onStop() {
//        Log.d(AIApp.TAG, "onStop");
//        wv_recog.stopAnim();
//        stopAnimation();
//        super.onStop();
//    }
//
//    //语音唤醒回调
//    @Override
//    public void onWakeupSuccess(String word, WakeUpResult result) {
//        Log.d(AIApp.TAG, "唤醒成功，唤醒词：" + word);
//        doSpeak("恩？我在!");
//        myWakeup.setWakeuped(true);
//        doVoiceRecog(true);
//    }
//
//    @Override
//    public void onWakeupStoped() {
//        Log.d(AIApp.TAG, "唤醒停止，onStoped：");
//        myWakeup.setWakeuped(false);
//    }
//
//    @Override
//    public void onWakeupError(int errorCode, String errorMessge, WakeUpResult result) {
//        Log.d(AIApp.TAG, "唤醒错误：" + errorCode + ";错误消息：" + errorMessge + "; 原始返回" + result.getOrigalJson());
//        myWakeup.setWakeuped(false);
//    }
//
//    @Override
//    public void onASrAudio(byte[] data, int offset, int length) {
//        Log.d(AIApp.TAG, "audio data： " + data.length);
//    }
//
//    @Override
//    public boolean handleMessage(Message msg) {
////        Log.d(AIApp.TAG, "handleMessage：" + msg);
//        runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                switch (msg.what) {
////                    case Native.REQ_LOAD_MODEL:
////                        boolean ret = true;
////                        HashMap<String, Boolean> mRet = (HashMap) msg.obj;
////                        for (String key : mRet.keySet()) {
////                            boolean v = mRet.get(key);
////                            if (!v) {
//////                              Toast.makeText(this, key + "加载失败！", Toast.LENGTH_SHORT).show();
////                                ret = false;
////                                doSpeak(key + "加载失败！", true);
////                            }
////                        }
////                        if (ret)
////                            doSpeak("所有检测器加载成功！", true);
////                        break;
//                    case BluetoothService.MSG_STATE_CHANGE:
//                        switch (msg.arg1) {
//                            case BluetoothService.STATE_CONNECTED:
//                                doSpeak("我能动了！", true);
//                                btService.write(BluetoothService.MSG_RESET_SIGN, 0);
//                                break;
//                            case BluetoothService.STATE_CONNECTING:
//                                doSpeak("控制身体中...", true);
//                                break;
//                            case BluetoothService.STATE_LISTEN:
//                            case BluetoothService.STATE_NONE:
//                                doSpeak("我不能动了！", true);
//                                break;
//                        }
//                        break;
//                    case BluetoothService.MSG_READ:
//                        byte[] readBuf = (byte[]) msg.obj;
//                        // construct a string from the valid bytes in the buffer
//                        String readMessage = new String(readBuf, 0, msg.arg1);
//                        Log.d(AIApp.TAG, "MSG_READ：" + readMessage);
//                        break;
//                    case ServoPatrol.MSG_CODE:
//                        Log.d(AIApp.TAG, "ServoPatrol: " + msg.arg1 + "---" + BluetoothUtil.angleToPwm(msg.arg1, BluetoothService.MSG_PWM3_ANGLE_HALF));
//                        btService.write(BluetoothService.MSG_PWM3_SIGN, BluetoothUtil.angleToPwm(msg.arg1, BluetoothService.MSG_PWM3_ANGLE_HALF));
//                        break;
//                    //STATUS_SPEAKING 用户开始说话到用户说话完毕前
//                    //STATUS_RECOGNITION 用户说话完毕后，识别结束前
//                    //STATUS_FINISHED 获得最终识别结果
//                    case STATUS_ASR:
//                        String asr_word = (String) msg.obj;
////                        Log.d(AIApp.TAG, "handleMessage STATUS_ASR : " + msg.arg1 + "---" + asr_word);
//                        switch (msg.arg1) {
//                            case STATUS_ASR_READY:
//                                stopWakeup();
//                                break;
//                            case STATUS_ASR_SPEAKING:
//                                showWaveAnim();
//                                break;
//                            case STATUS_ASR_VOLUME:
//                                showWaveAnim();
//                                wv_recog.setVolume(msg.arg2);
//                                break;
//                            case STATUS_ASR_RECOGING:
//                                break;
//                            case STATUS_ASR_PART_FINISHED:
//                                Log.d(AIApp.TAG, "handleMessage STATUS_ASR_PART_FINISHED : " + asr_word + "---" + TTSHelper.isSpeaking());
//                                if (TTSHelper.isSpeaking()) {
//                                    String breakCmd = TTSHelper.isBreakCmd(asr_word, 0.7d);
//                                    if (!TextUtils.isEmpty(breakCmd)) {
//                                        Log.d(AIApp.TAG, "handleMessage STATUS_ASR_PART_FINISHED isBreakCmd: " + breakCmd + "---" + asr_word);
//                                        doSpeak("好的！");
//                                        TTSHelper.doShutup();
//                                    }
//                                    break;
//                                }
//                                break;
////                            case STATUS_ASR_FINAL_FINISHED:
////                                Log.d(AIApp.TAG, "handleMessage STATUS_ASR_FINAL_FINISHED : " + asr_word);
////                                break;
//                            case STATUS_ASR_FAILED:
//                                doSpeak("我没明白你的意思哦！");
//                                break;
//                            case STATUS_ASR_FINAL_FINISHED:
//                                Log.d(AIApp.TAG, "handleMessage STATUS_ASR_FINAL_FINISHED: " + asr_word);
//                                detectNoSpeech = System.currentTimeMillis();
//                                if (TTSHelper.isSpeaking(System.currentTimeMillis())) {
//                                    return;
//                                }
//                                String[] rets = CmdUtil.isCmd(asr_word);
//                                if (rets != null) {
//                                    Log.d(AIApp.TAG, "handleMessage STATUS_ASR_PART_FINISHED isCmd: " + rets[0] + "---" + asr_word);
//                                    try {
//                                        CmdUtil.executeCmd(MainActivity.this, musicService, btService, rets[0], rets[1]);
//                                    } catch (CameraAccessException e) {
//                                        doSpeak("执行命令失败！");
//                                    }
//                                    break;
//                                }
//                                if (musicService.isPlaying()) {
//                                    break;
//                                }
//                                StringBuffer sb = new StringBuffer();
//                                chatGpt.startChat(new ConsoleEventSourceListener() {
//                                    @Override
//                                    public void onEvent(EventSource eventSource, String id, String type, String data) {
//                                        Log.d(AIApp.TAG, "handleMessage chatgpt onEvent: " + id + "---" + type + "---" + data);
//                                        if (TextUtils.isEmpty(data)) {
//                                            ChatGpt.thinking = -1;
//                                            doSpeak("我没明白你的意思哦！");
//                                            return;
//                                        }
//
//                                        try {
//                                            if (!TextUtils.isEmpty(data)) {
//                                                ChatBean chatBean = GJsonHelper.parseJson(data, ChatBean.class);
//                                                if (chatBean != null && !chatBean.getChoices().isEmpty()) {
//                                                    for (Choices choice : chatBean.getChoices()) {
//                                                        if (choice.getDelta() != null && !TextUtils.isEmpty(choice.getDelta().getContent())) {
//                                                            String content = choice.getDelta().getContent();
//                                                            sb.append(content);
//                                                            if (content.equals(",") || content.equals("，") || content.equals("。") || content.equals(".")) {
//                                                                doSpeak(sb.toString(), true);
//                                                                sb.setLength(0);
//                                                            }
//                                                        }
//                                                    }
//                                                    if (chatBean.getChoices().get(0).getFinish_reason().equals("stop")) {
//                                                        ChatGpt.thinking = -1;
//                                                        if (!TextUtils.isEmpty(sb.toString())) {
//                                                            doSpeak(sb.toString(), true);
//                                                            sb.setLength(0);
//                                                        }
//                                                    }
//                                                }
//                                            }
//                                        } catch (Exception e) {
//                                            e.printStackTrace();
//                                        }
//                                    }
//
//                                    @Override
//                                    public void onFailure(EventSource eventSource, Throwable t, Response response) {
//                                        Log.d(AIApp.TAG, "handleMessage chatgpt onFailure: " + t.getMessage());
//                                        ChatGpt.thinking = -1;
//                                        doSpeak("我没明白你的意思哦！");
//                                    }
//                                }, asr_word);
//                                break;
//                            case STATUS_ASR_STOPPED:
//                                break;
//                            case STATUS_ASR_LONG_STOPPED:
//                            case STATUS_ASR_EXIT:
//                                Log.d(AIApp.TAG, "handleMessage STATUS_ASR_LONG_STOPPED & STATUS_ASR_EXIT: ");
//                                hideWaveAnim();
//                                startWakeup();
//                                break;
//                        }
//                        break;
//                }
//            }
//        });
//        return false;
//    }
//
//    private void doVoiceRecog(boolean restart) {
//        // 此处 开始正常识别流程
//        Map<String, Object> params = AuthUtil.getParam();
//        params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, true);
//        params.put(SpeechConstant.VAD_ENDPOINT_TIMEOUT, 1000);
////        params.put(SpeechConstant.ACCEPT_AUDIO_DATA, true);
//        params.put(SpeechConstant.VAD, SpeechConstant.VAD_DNN);
//        // 使用1537中文模型。其它PID参数请看文档
//
//        params.put(SpeechConstant.PID, MODE_PID);
////        params.put(SpeechConstant.OUT_FILE, asr_speech_file.getAbsolutePath());
//        params.put(SpeechConstant.BDS_ASR_ENABLE_LONG_SPEECH, true);
//        if (backTrackInMs > 0) {
//            // 方案1  唤醒词说完后，直接接句子，中间没有停顿。开启回溯，连同唤醒词一起整句识别。
//            // System.currentTimeMillis() - backTrackInMs ,  表示识别从backTrackInMs毫秒前开始
//            params.put(SpeechConstant.AUDIO_MILLS, System.currentTimeMillis() - backTrackInMs);
//        }
//        if (restart) {
//            myRecognizer.cancel();
//        }
//        myRecognizer.start(params);
//    }
//
//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//        Log.d(AIApp.TAG, "onActivityResult: " + requestCode + "---" + resultCode);
//        if (resultCode == RESULT_OK) {
//            if (requestCode == REQ_VOICEPRINT) {
////                voicePrintInfos = VoicePrintNative.getVoicePrintInfos();
//            }
//        }
//    }
//
//    @Override
//    public void onWeather(String info) {
//        HFWeather.getInstance().setWeatherListener(null);
//        HFWeather.getInstance().setType(0);
//        HFWeather.getInstance().setIndex(-1);
//        TTSHelper.doSpeak(info);
//    }
//
//    @Override
//    protected void onDestroy() {
//        timer.cancel();
//        myWakeup.release();
//        myRecognizer.release();
//        if (servoPatrol != null) {
//            servoPatrol.stopPatrol();
//        }
//        btService.write(BluetoothService.MSG_RESET_SIGN, 0);
//        // 解除绑定 MusicService
//        unbindService(mConn);
//        super.onDestroy();
//    }
//}